#include <iostream>
#include <stdlib.h>
#include "Test.h"
using namespace std;


//1 malloc free
// new     delete c++语法
// new 出来是一个指针变量
//2 new 基础类型  分配数组变量 分配类对象
//3 

//分配基础类型
int main01(int argc, char const *argv[]){
        //
        int *p = (int *)malloc(sizeof(int));
        *p = 10;
        free(p);

        int *p2 = new int; //分配基础类型
        *p2 = 20;
        delete p2;

        int *p3 = new int(30); //分配基础类型并且赋值
        cout<<"p3 = "<< *p3<< endl;
        delete p3;

        return 0;
}

//分配数组变量 
int main02(int argc, char const *argv[]){
        //c语言分配数组
        int *p = (int *)malloc(sizeof(int)*10);
        p[0] = 1;
        free(p);

        //c++语言分配数组
        int *pArray = new int[10]; //int buf[10]
        pArray[1] = 2; 
        delete [] p; //数组不要把[]忘记
        return 0;
}

//动态分配对象
//c++ 的 new 能执行类的构造函数 delete能执行类的析够函数
//而c语言的malloc free则不能
int main(int argc, char const *argv[]){
        //c语言的
        Test *pT1 = (Test *)malloc(sizeof(Test));
        free(pT1);

        Test *pT2 = new Test(10);
        delete pT2;

        return 0;
}